//
// Created by mazaiting on 2024/4/27.
//

#include <bits/stdc++.h>

using namespace std;

template<typename T>

class Array         //定义类模板Array<T>
{
    T *data;            //T为类型参数，data为指针变量
    int length;            //实际元素个数

public:
    Array(int n = 1)                 //构造函数
    {
        data = new T[n];        //为data分配指向的内存空间，n为容量
        length = 0;                 //实际元素个数为0
    }

    ~Array() {            //析构函数
        delete[] data;        //释放data指向的空间
    }

    void add(T x)                 //添加一个元素x
    {
        data[length] = x;
        length++;
    }

    void display()                 //输出data指向的所有元素
    {
        for (int i = 0; i < length; i++)
            cout << data[i] << " ";
        cout << endl;
    }
};


int main() {
    Array<char> ac(3);            //定义模板类的对象ac
    ac.add('x');
    ac.add('y');
    ac.add('z');
    cout << "ac: ";
    ac.display();            //输出: x y z
    Array<int> ai(5);            //定义模板类的对象ai
    ai.add(1);
    ai.add(2);
    ai.add(3);
    ai.add(4);
    ai.add(5);
    cout << "ai: ";
    ai.display();            //输出: 1 2 3 4 5
    return 0;
}





























